<?php
/*----------------------------------------------------------------------*
 * ｺﾝﾎﾟｰﾈﾝﾄ名      : 最新情報追加・編集画面コントローラ
 * 最新ﾊﾞｰｼﾞｮﾝ     : v1.0
 * 作成日          : 2012/08/08
 * 担当者          : 野島賢三
 * 内容            : 新規作成
 *【改訂履歴】
 *----------------------------------------------------------------------*/
App::uses('AppController', 'Controller');

class NewInfosController extends AppController {

	// レイアウト(更新ページ用)
	public $layout = 'update_page';
	// コンポーネント
	public $components = Array('RequestHandler', 'ValidateForm', 'UserInf',
			'Session',
			'Auth' => Array(
					'loginRedirect' => Array('controller' => 'yosaadmin', 'action' => 'index'),
					'logoutRedirect' => Array('controller' => 'yosaadmin', 'action' => 'login'),
					'loginAction' => Array('controller' => 'yosaadmin', 'action' => 'login'),
					'authenticate' => Array('Form' => Array('username' => 'username'))
			)
	);
	// ページネーション(モデル：NewInfo)
	public $paginate = array('NewInfo' => array (
			// 削除フラグ = 「0:未削除」
			'conditions' => array('NewInfo.del_flg = ?' => array('0')),
			// 5件取得
			'limit' => '8',
			// id で昇順ソートする
			'order' => array('NewInfo.id' => 'DESC')
			));
	/**
	 * Controller呼び出し時に行う共通処理
	 * @see Controller::beforeFilter()
	 */
	public function beforeFilter() {
		parent::beforeFilter();
		/*-----------------------------*/
		/* 最終ログイン年月日を取得し設定する */
		/*-----------------------------*/
		$last_login_ymd = $this->UserInf->getLastLoginYmd();
		$this->set('last_login_ymd', $last_login_ymd);
	}
	/**
	 * 初期表示アクション
	 * URL : ./new_infos/index
	 */
	function index($result = null) {
		/*-----------------------*/
		/*  画面表示情報設定   */
		/*-----------------------*/
		// データ抽出(ページネーション)
		$new_info_datas = $this->paginate();
		// 抽出データをViewにセットする
		$this->set('new_info_datas', $new_info_datas);
		if ($result == 'resist') {
			$this->set('resist',COMPRETE_RESIST);
		} else if ($result == 'edit') {
			$this->set('resist',COMPRETE_EDIT);
		} else if ($result == 'del') {
			$this->set('resist',COMPRETE_DELETE);
		}
	}

	/**
	 * 追加アクション
	 * (Ajax通信にてcallされる)
	 *
	 * <<概要>>
	 * ①最新情報テーブルに登録
	 * ②登録結果をViewに設定する
	 *
	 * <<URL>>
	 *  ./new_infos/add
	 */
	function add() {
		// Ajax通信の場合のみ更新処理を行う
		if($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
			// Requestデータが存在する場合
			if($this->request->data) {

				/*--------------------*/
				/*  単項目チェック  */
				/*--------------------*/
				$publish_ymd = $this->request->data['publish_ymd'];
				$content = $this->request->data['content'];
				$this->request->data['del_flg'] = '0';
				$error = array();
				// 必須項目チェック
				$checkResult = $this->ValidateForm
					->checkDate($publish_ymd, array('true_date' =>TRUE), PUBLISH_YMD, $error);
				// 実在日チェック
				$checkResult = $this->ValidateForm
					->checkText($content, array('required' =>TRUE), CONTENT, $error);
				// チェック結果を設定
				$result = array ('check' => $checkResult, 'error' =>$error);
				if ($checkResult) {
					// エラーがなければDB登録を行う
					$this->NewInfo->save($this->request->data);
					// 登録結果をViewに設定
					$this->request->data['id'] = $this->NewInfo->getLastInsertID();
					$this->set('result', $result);
					$this->set('datas', $this->request->data);
				} else {
					// エラーメッセージをViewに設定
					$this->set('result', $result);
				}
			}
		}
	}

	/**
	 * 編集アクション
	 * URL : ./new_infos/edit
	 */
	function edit() {

		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
			// Requestデータが存在する場合
			if($this->request->data){
				$publish_ymd = $this->request->data['publish_ymd'];
				$content = $this->request->data['content'];
				$this->request->data['del_flg'] = '0';
				$error = array();
				// 必須項目チェック
				$checkResult = $this->ValidateForm
				->checkDate($publish_ymd, array('true_date' =>TRUE), PUBLISH_YMD, $error);
				// 実在日チェック
				$checkResult = $this->ValidateForm
				->checkText($content, array('required' =>TRUE), CONTENT, $error);
				// チェック結果を設定
				$result = array ('check' => $checkResult, 'error' =>$error);
				if ($checkResult) {
					// エラーがなければDB登録を行う
					$this->NewInfo->save($this->request->data);
					$this->set('result', $result);
					$this->set('datas', $this->request->data);
				} else {
					// エラーメッセージをViewに設定
					$this->set('result', $result);
				}
			}
		}

	}

	/**
	 * 削除アクション
	 * ./new_infos/del
	 */
	function del() {

		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
			// Requestデータが存在する場合
			if ($this->request->data) {
				// 入力されたIDに該当するデータを削除
				$updateResult = $this->NewInfo->delete($this->request->data['id']);
				// 結果を設定
				$result = array ('check' => $updateResult);
				$this->set('result', $result);
			}
		}

	}
}